﻿/*
 * Created by SharpDevelop.
 * User: CrOnO
 * Date: 13/11/2011
 * Time: 07:13 p.m.
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Business_Entity;
using Business_Logic;

namespace PetSoft.GUI.RRHH
{
	/// <summary>
	/// Description of GUIBuscarEmpleadoServicio.
	/// </summary>
	public partial class GUIBuscarEmpleadoServicio : Form
	{
		private BEServicio servicio;
		private BEEmpleado empleado;
		private List<BEEmpleado> lista;
		private DateTime fecha;
		private DateTime hora;
		private int colCheck;
		private int colN;
		
		private DateTimePicker horaDTP{
			get{return this.fechaDTP;}
		}
		
		public GUIBuscarEmpleadoServicio()
		{
			//
			// The InitializeComponent() call is required for Windows Forms designer support.
			//
			InitializeComponent();
			this.servicio = null;
			this.lista = null;
			this.colCheck = 0;
			this.colN = 5;
			
			this.servicio = new BEServicio();
			this.resultadosDGV.CellDoubleClick += new DataGridViewCellEventHandler(this.doubleClickResultadosDGV);
			
			this.nombreTB.KeyPress += new KeyPressEventHandler(Utils.SoloLetrasTB);
			this.apPaternoTB.KeyPress += new KeyPressEventHandler(Utils.SoloLetrasTB);
			this.apMaternoTB.KeyPress += new KeyPressEventHandler(Utils.SoloLetrasTB);
			//
			// TODO: Add constructor code after the InitializeComponent() call.
			//
		}
		
		public GUIBuscarEmpleadoServicio(DateTime fecha, DateTime hora)
		{
			//
			// The InitializeComponent() call is required for Windows Forms designer support.
			//
			InitializeComponent();
			this.servicio = null;
			this.lista = null;
			this.colCheck = 0;
			this.colN = 5;
			
			this.servicio = new BEServicio();
			this.fecha = fecha;
			this.hora = hora;
			//
			// TODO: Add constructor code after the InitializeComponent() call.
			//
		}

		void buscarClick(object sender, EventArgs e)
		{
			try
			{
				resultadosDGV.Rows.Clear();
				BLEmpleado bl = new BLEmpleado();
				List<BEEmpleado> be = new List<BEEmpleado>();
				
				if (this.servicio != null)
				{
					List<String> datos = new List<String>();
					datos.Add(nombreTB.Text);
					datos.Add(apPaternoTB.Text);
					datos.Add(apMaternoTB.Text);
					for (int i=0; i<datos.Count; i++)
					{
						if ((datos[i] == null) || (datos[i] == "<Seleccionar>"))
							datos[i] = "";
					}
					be = bl.buscarEmpleadoServicio(datos[0], datos[1], datos[2], this.horaDTP.Value,
					                               this.servicio.Codigo, this.fechaDTP.Value);
					if (be != null)
					{
						this.resultadosDGV.AllowUserToAddRows = true;
						this.lista = be;
						this.resultadosDGV.Rows.Clear();
						for (int j=0; j<be.Count; j++)
						{
							string[] fila = null;
							fila = new string[]{
										false.ToString(),
										be[j].IdEmpleado.ToString(),
							            be[j].Nombre,
							            be[j].ApPaterno,
							            be[j].ApMaterno,
							            j.ToString()
							            };
							this.resultadosDGV.Rows.Add(fila);
						}
						this.resultadosDGV.AllowUserToAddRows = false;
						if (this.resultadosDGV.Rows.Count == 1)
							this.nroResultadosLB.Text = "Cantidad de Empleados encontrados: " + this.resultadosDGV.Rows.Count;
						else if (this.resultadosDGV.Rows.Count == 0)
							this.nroResultadosLB.Text = "Cantidad de Empleados encontrados: 0";
						else if (this.resultadosDGV.Rows.Count > 1)
							this.nroResultadosLB.Text = "Cantidad de Empleados encontrados: " + this.resultadosDGV.Rows.Count;
					}
					else
					{
						this.nroResultadosLB.Text = "Cantidad de Empleados encontrados: 0";
						//MessageBox.Show("No se han hallado resultados","Aviso");
					}
				}
			}
			catch
			{
			}
		}
	
		void aceptarClick(object sender, EventArgs e)
		{
			try
			{
				int cont = 0;
				int aux = 0;
				int pos = 0;
				foreach (DataGridViewRow fila in resultadosDGV.Rows)
				{
					if (fila.Cells[this.colCheck].Value != null && bool.Parse(fila.Cells[this.colCheck].Value.ToString()))
					{
						cont++;
						pos = aux;
					}
					aux++;
				}
				
				if (cont == 0)
				{
					MessageBox.Show("Seleccione un empleado.","Aviso");	
				}
				else if (cont == 1)
				{				
					DataGridViewRow fila = resultadosDGV.Rows[pos];
					if (fila.Cells[this.colCheck].Value != null && bool.Parse(fila.Cells[this.colCheck].Value.ToString()))
					{
						if (this.lista != null){
							this.empleado = lista[int.Parse(fila.Cells[this.colN].Value.ToString())];
							this.Close();
						}

					}
				}
				else if (cont > 1)
				{
					MessageBox.Show("Seleccione sólo un empleado","Aviso");		
				}
			}
			catch
			{
			}
		}
		
				
		void limpiarClick(object sender, EventArgs e)
		{
			this.nombreTB.Text = "";
			this.apPaternoTB.Text = "";
			this.apMaternoTB.Text = "";
		}
		
		void doubleClickResultadosDGV(object sender, DataGridViewCellEventArgs e)
		{
			try{
				if (resultadosDGV.Rows.Count > 0)
				{
					if ((e.RowIndex != -1) && (e.ColumnIndex != -1))
					{
						foreach (DataGridViewRow fila in this.resultadosDGV.SelectedRows)
						{
							if ((fila.Cells[this.colCheck].Value != null) && !(bool.Parse(fila.Cells[this.colCheck].Value.ToString())))
								fila.Cells[this.colCheck].Value = bool.Parse(true.ToString());
							else if ((fila.Cells[this.colCheck].Value != null) && (bool.Parse(fila.Cells[this.colCheck].Value.ToString())))
								fila.Cells[this.colCheck].Value = bool.Parse(false.ToString());
						}
					}
				}
			}
			catch (Exception ex)
			{
				MessageBox.Show("Error: " + ex,"Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
			}
		}
		
		void GUIBuscarEmpleadoServicioLoad(object sender, EventArgs e)
		{
			if (servicio != null)
				servicioTB.Text = servicio.Descripcion;
			this.fechaDTP.Value = this.fecha;
			this.horaDTP.Value = this.hora;
		}
		
		public BEServicio Servicio
		{
			get { return servicio; }
			set { servicio = value; }
		}
		
		public BEEmpleado Empleado
		{
			get { return empleado; }
			set { empleado = value; }
		}
		
		public DateTime Fecha
		{
			get { return fechaDTP.Value; }
			set { fecha = value; }
		}
		
		public DateTime Hora
		{
			get { return hora; }
			set { hora = value; }
		}
		
		void HoraDTPValueChanged(object sender, EventArgs e)
		{
			//Utils.dateMayorQueNow(sender, e);
		}
		
		void FechaDTPValueChanged(object sender, EventArgs e)
		{
			Utils.dateMayorQueNow(sender, e);
			resultadosDGV.Rows.Clear();
		}
	}
}
